/*
*    Author : heiden deng(dengjianquan@beyondcent.com)
*    2017/08/03
*    version 0.0.9
*    负载均衡处理类接口定义
*/

#ifndef HTSC_LOADBALANCE_H
#define HTSC_LOADBALANCE_H
#include "htsc_common/htsc_types.h"
#include<map>
#include<vector>
#include<string>

#ifdef __cplusplus
extern "C" {
#endif

class htsc_grpc_loadbalance {
public:
	//根据服务名sn选择一个provider，step:步长（干扰因子），默认为0，即策略本身决定provider位置，非零值时接口可以影响
	//策略选择provider的算法（主要影响provider的位置）,保留接口，功能未实现
	virtual provider_t* chooseProvider(const char* sn, int step = 0) = 0;

	virtual void setProviders(std::map<std::string, std::vector<provider_t*> > *_providers) = 0;

	virtual	void resetCursor(const char* sn) = 0;
};

#ifdef __cplusplus
}
#endif

#endif

